package com.yidu.hbatsams.service;

import com.yidu.hbatsams.domain.*;
import com.yidu.hbatsams.utils.Message;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public interface AtsSchemeImpl {

    List<AtsScheme> selectAll(AtsScheme atsScheme,Integer pageNum,Integer pageSize);

    /**
     * 查询总行数
     * @return 总行数
     */
    int selectAllCount(AtsScheme atsScheme);

    int atsSchemeExpertInsert(AtsSchemeExpert atsSchemeExpert);

    //查询所有运动员
    public List<AtsEmpAthlete> selectAllAts();

    /**
     * 查询方案是否已被申请过
     * @param schemeId
     * @return AtsSchemeExpert
     */
    public List<AtsSchemeExpert> selectExist(Integer schemeId);

    /**
     * 查询审核意见
     * @param saId
     * @return List<AtsSchemeAudit>
     */
    public List<AtsSchemeAudit> selectAuExp(Integer saId);

    //根据id查询运动员
    public AtsEmpAthlete selectAts(Integer athleteId);

    //查询所有教练
//    public List<AtsEmpCoach> selectAllCoachs();

    //根据id查询教练
//    public AtsEmpCoach selectCoach(Integer coachId);


    /**
     * 总行数
     * @param atsScheme
     * @return count
     */
    //Long count(AtsScheme atsScheme);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    int deleteByPrimaryKey(Integer schemeId);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    int insert(AtsScheme record);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    Message insertSelective(AtsScheme record);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    AtsScheme selectByPrimaryKey(Integer schemeId);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    int updateByPrimaryKeySelective(AtsScheme record);

    /**
     *
     * @mbg.generated 2019-10-29
     */
    int updateByPrimaryKey(AtsScheme record);

    /**
     * 根据教练ID查询运动员
     * @param coachId
     * @return AtsEmpCoachAthlete
     */
    List<AtsEmpCoachAthlete> selectaths(Integer coachId);

    /**
     * 增加方案对应的运动员表
     * @param atsSchemeAthlete
     * @return int
     */
    int insertAtsSchemeAthlete(AtsSchemeAthlete atsSchemeAthlete);

    /**
     * 根据方案id和运动员id更改方案对应的运动员表
     * @param atsSchemeAthlete
     * @return int
     */
    int updateAtsSchemeAthletes(AtsSchemeAthlete atsSchemeAthlete);

    /**
     * 根据方案id查询运动员
     * @param schemeId
     * @return List<AtsSchemeAthlete>
     */
    List<AtsSchemeAthlete> selectschemeId(Integer schemeId);

    /**
     * 根据方案id删除信息
     * @param schemeId
     * @return int
     */
    int deleteAthleteId(Integer schemeId);

    /**
     * 修改方案显示
     * @param schemeId
     * @return int
     */
    int deleteScheme(Integer schemeId);

    /**
     * 修改方案显示
     * @param schemeIds
     * @return int
     */
    void deleteScheme(Integer[] schemeIds);

    /**
     * 将方案对应的运动员表的数据改成无效数据
     * @param schemeId
     * @return
     */
    int updateIsva(Integer schemeId);

    void updateIsva(Integer[] schemeIds);

    /**
     * 查询专家
     * @return List<AtsEmpExpert>
     */
    List<AtsEmpExpert> selectAtsEmpExpert();

    /**
     * 给审核表插入数据,与专家咨询表增加专家
     * @param atsSchemeAudit，atsSchemeExpert
     * @return int
     */
    Message atsSchemeAuditMapperInsert(AtsSchemeAudit atsSchemeAudit,AtsSchemeExpert atsSchemeExpert);

    /**
     * 给专家咨询表增加专家
     * @param atsSchemeExpert
     * @return int
     */
//    int atsSchemeExpertMapperInertExpert(AtsSchemeExpert atsSchemeExpert);

    /**
     * 根据said查询审核表
     * @param saId
     * @return AtsSchemeAudit
     */
    List<AtsSchemeAudit> atsSchemeAuditSelectBySaId(String saId);

    /**
     * 修改专家咨询表
     * @param atsSchemeExpert
     * @return int
     */
    int atsSchemeExpertUpdateByPrimaryKeySelective(AtsSchemeExpert atsSchemeExpert);

    int updateAtsSchemeAthlete(AtsSchemeAthlete atsSchemeAthlete);

    /**
     * 根据运动员id查询方案对应的运动员表
     * @param
     * @return List<AtsSchemeAthlete>
     */
//    List<AtsSchemeAthlete> selectByAthleteId(Integer athleteId);

    /**
     * 查询审核表
     * @return List<AtsSchemeAudit>
     */
    public List<AtsSchemeAudit> selectAtsSchemeAudit();

    /**
     * 根据方案id修改审核数据表
     * @param atsSchemeAudit
     * @return int
     */
    public void updateAtsSchemeAudit(AtsSchemeAudit atsSchemeAudit);

    /**
     * 根据运动员id查询信息
     * @param athleteId
     * @return List<AtsSchemeAthlete>
     */
    public List<AtsSchemeAthlete> selectByAthleteId(Integer athleteId);

    /**
     * 根据方案id查询信息
     * @param map
     * @return List<AtsScheme>
     */
    public List<AtsScheme> selectByPrimaryKeyAthlete(Map<String,Object> map, Integer pageNum, Integer pageSize);

    public int selectByPrimaryKeyAthleteCount(Map<String,Object> map);
}
